home *** CD-ROM | disk | FTP | other *** search
/ Windows 95 Super Collection / Windows 95 Super Collection.iso / win95 / bench / thread / fileopts.cpp next >
Encoding:
C/C++ Source or Header  |  1995-08-11  |  4.6 KB  |  183 lines

  1. // fileopts.cpp : implementation file
  2. //
  3.  
  4. #include <stdlib.h>
  5.  
  6. #include "stdafx.h"
  7. #include "thrdomtr.h"
  8. #include "fileopts.h"
  9.  
  10. #ifdef _DEBUG
  11. #undef THIS_FILE
  12. static char BASED_CODE THIS_FILE[] = __FILE__;
  13. #endif
  14.  
  15. /////////////////////////////////////////////////////////////////////////////
  16. // CFileDemoOptionsDlg dialog
  17.  
  18.  
  19. CFileDemoOptionsDlg::CFileDemoOptionsDlg(CWnd* pParent /*=NULL*/)
  20.     : CDialog(CFileDemoOptionsDlg::IDD, pParent)
  21. {
  22.     //{{AFX_DATA_INIT(CFileDemoOptionsDlg)
  23.     m_uFileKB = 0;
  24.     m_strWorkFileName = _T("");
  25.     //}}AFX_DATA_INIT
  26.  
  27.     m_bDoAsynchronousFileIO = TRUE;
  28.     m_bDoFileWrite = TRUE;
  29.  
  30. }
  31.  
  32. void CFileDemoOptionsDlg::DoDataExchange(CDataExchange* pDX)
  33. {
  34.     CDialog::DoDataExchange(pDX);
  35.     //{{AFX_DATA_MAP(CFileDemoOptionsDlg)
  36.     DDX_Text(pDX, IDC_FILE_KB, m_uFileKB);
  37.     DDV_MinMaxUInt(pDX, m_uFileKB, 1, 64000);
  38.     DDX_Text(pDX, IDC_FILENAME, m_strWorkFileName);
  39.     DDV_MaxChars(pDX, m_strWorkFileName, 255);
  40.     //}}AFX_DATA_MAP
  41.  
  42.     // Do-it-ourselves data transfer.
  43.     if(pDX->m_bSaveAndValidate == FALSE)    
  44.     {
  45.         // Write member variables to controls.
  46.         if(m_bDoAsynchronousFileIO)
  47.             CheckDlgButton(IDC_ASYNCH_FILE_IO, 1);
  48.         else
  49.             CheckDlgButton(IDC_SYNCH_FILE_IO, 1);
  50.  
  51.         if(m_bDoFileWrite)
  52.             CheckDlgButton(IDC_WRITE_FILE, 1);
  53.         else
  54.             CheckDlgButton(IDC_READ_FILE, 1);
  55.     }
  56.     else
  57.     {
  58.         // Save control values to member variables.
  59.         if(IsDlgButtonChecked(IDC_ASYNCH_FILE_IO))
  60.             m_bDoAsynchronousFileIO = TRUE;
  61.         else
  62.             m_bDoAsynchronousFileIO = FALSE;
  63.                         
  64.         if(IsDlgButtonChecked(IDC_WRITE_FILE))
  65.             m_bDoFileWrite = TRUE;
  66.         else
  67.             m_bDoFileWrite = FALSE;            
  68.     }
  69. }
  70.  
  71.  
  72. BEGIN_MESSAGE_MAP(CFileDemoOptionsDlg, CDialog)
  73.     //{{AFX_MSG_MAP(CFileDemoOptionsDlg)
  74.     ON_BN_CLICKED(IDC_READ_FILE, OnReadFile)
  75.     ON_BN_CLICKED(IDC_WRITE_FILE, OnWriteFile)
  76.     ON_BN_CLICKED(IDC_BROWSE_BTN, OnBrowseBtn)
  77.     ON_WM_VSCROLL()
  78.     //}}AFX_MSG_MAP
  79. END_MESSAGE_MAP()
  80.  
  81.  
  82. /////////////////////////////////////////////////////////////////////////////
  83. // CFileDemoOptionsDlg message handlers
  84.  
  85. void CFileDemoOptionsDlg::OnReadFile() 
  86. {
  87.     // Enable read options and disable write options.
  88.     GetDlgItem(IDC_FILENAME)->EnableWindow(TRUE);
  89.     GetDlgItem(IDC_BROWSE_BTN)->EnableWindow(TRUE);
  90.  
  91.     GetDlgItem(IDC_FILE_KB)->EnableWindow(FALSE);
  92.     GetDlgItem(IDC_SPIN_FILE_KB)->EnableWindow(FALSE);
  93. }
  94.  
  95. void CFileDemoOptionsDlg::OnWriteFile() 
  96. {
  97.     // Disable read options and enable write options.
  98.     GetDlgItem(IDC_FILENAME)->EnableWindow(FALSE);
  99.     GetDlgItem(IDC_BROWSE_BTN)->EnableWindow(FALSE);
  100.  
  101.     GetDlgItem(IDC_FILE_KB)->EnableWindow(TRUE);
  102.     GetDlgItem(IDC_SPIN_FILE_KB)->EnableWindow(TRUE);
  103. }
  104.  
  105. BOOL CFileDemoOptionsDlg::OnInitDialog() 
  106. {
  107.     CDialog::OnInitDialog();
  108.  
  109.     if(IsDlgButtonChecked(IDC_READ_FILE))
  110.     {
  111.         GetDlgItem(IDC_FILENAME)->EnableWindow(TRUE);
  112.         GetDlgItem(IDC_BROWSE_BTN)->EnableWindow(TRUE);
  113.  
  114.         GetDlgItem(IDC_FILE_KB)->EnableWindow(FALSE);
  115.         GetDlgItem(IDC_SPIN_FILE_KB)->EnableWindow(FALSE);
  116.     }
  117.     else
  118.     {
  119.         GetDlgItem(IDC_FILENAME)->EnableWindow(FALSE);
  120.         GetDlgItem(IDC_BROWSE_BTN)->EnableWindow(FALSE);
  121.  
  122.         GetDlgItem(IDC_FILE_KB)->EnableWindow(TRUE);
  123.         GetDlgItem(IDC_SPIN_FILE_KB)->EnableWindow(TRUE);
  124.     }
  125.  
  126.     // TODO: Add extra initialization here
  127.     
  128.     return TRUE;  // return TRUE unless you set the focus to a control
  129.                   // EXCEPTION: OCX Property Pages should return FALSE
  130. }
  131.  
  132. void CFileDemoOptionsDlg::OnBrowseBtn() 
  133. {
  134.     // Allow user to set filename to read in.
  135.     CFileDialog BrowseFileDlg(TRUE, "*.*", NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, "All files (*.*)|*.*||");
  136.     
  137.     CString strNewPath;
  138.  
  139.     int rc = BrowseFileDlg.DoModal();
  140.  
  141.     if(rc)
  142.     {
  143.         strNewPath = BrowseFileDlg.GetPathName();
  144.         GetDlgItem(IDC_FILENAME)->SetWindowText(strNewPath);
  145.     }
  146. }
  147.  
  148. void CFileDemoOptionsDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
  149. {
  150.     // Do 'spin-button' functionality for KB control.
  151.     
  152.     // ***Note that MFC v. 3.2 provides a Windows 95 CSpinButtonCtrl to 
  153.     // do this for you.  (Using MFC 3.0 functionality for Visual C++ 2.0/2.1
  154.     // users.)
  155.     
  156.     if(pScrollBar->GetDlgCtrlID() == IDC_SPIN_FILE_KB)
  157.     {
  158.         int nNewKB = GetDlgItemInt(IDC_FILE_KB);
  159.  
  160.         nNewKB = (nNewKB / 4) * 4;
  161.  
  162.         if(nSBCode == SB_LINEDOWN)
  163.             nNewKB -= 4;    
  164.         else if(nSBCode == SB_LINEUP)
  165.             nNewKB += 4;     
  166.  
  167.         // Ensure positive result.
  168.         nNewKB = max(nNewKB, 1);
  169.  
  170.         SetDlgItemInt(IDC_FILE_KB, nNewKB, FALSE);
  171.                 
  172.         CEdit *FileKBEdit = (CEdit *)GetDlgItem(IDC_FILE_KB);
  173.         
  174.         // Highlight all chars. inside edit control.
  175.         FileKBEdit->SetSel(0, -1);
  176.                         
  177.         // Give it the focus as well.
  178.         FileKBEdit->SetFocus();
  179.     }
  180.     else
  181.         CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
  182. }
  183.